package com.millstein.tsinglog.service;

import com.millstein.tsinglog.model.dto.carousel.CarouselImageSaveDTO;
import com.millstein.tsinglog.model.dto.carousel.CarouselSaveDTO;
import com.millstein.tsinglog.model.pojo.CarouselImage;
import com.millstein.tsinglog.model.vo.result.PageResult;

import java.util.List;
import java.util.Map;

public interface CarouselService {
    /**
     * 分页条件查询轮播图图片
     * @param currentPage 当前页
     * @param pageSize 每页数据量
     * @param keyword 关键字
     * @return
     */
    PageResult<CarouselImage> getImagesByPage(Integer currentPage, Integer pageSize, String keyword);

    /**
     * 设置轮播图图片是否启用
     * @param id 图片的id
     * @param usable 是否启用，1启用，0禁用
     * @return
     */
    void changeUsable(Long id, Short usable);

    /**
     * 保存轮播图配置
     * @param carouselSaveDTO 配置信息
     */
    void saveConfig(CarouselSaveDTO carouselSaveDTO);

    /**
     * 根据轮播图的配置名或者配置的值
     * @param key 配置名
     * @return
     */
    Object getConfigByKey(String key);

    /**
     * 新增轮播图数据
     * @param carouselImageSaveDTO 轮播图的数据
     * @return
     */
    void insertCarouselImage(CarouselImageSaveDTO carouselImageSaveDTO);

    /**
     * 根据id查询轮播图片
     * @param id 轮播图片的id
     * @return
     */
    CarouselImage getCarouselImageById(Long id);

    /**
     * 修改轮播图数据
     * @param carouselImageSaveDTO 轮播图的数据
     * @return
     */
    void updateCarouselImage(CarouselImageSaveDTO carouselImageSaveDTO);

    /**
     * 批量删除轮播图片
     * @param ids
     * @return
     */
    void deleteByIds(List<Long> ids);

    /**
     * 为前端准备需要显示轮播图的信息
     * @return
     */
    List<CarouselImage> getCarouselImageListForPortal();
}
